/*
  Grupo 2
  
  Luiz Felipe de Souza Mattos 	RA 107822
  
  Debora Maia Silva 	      	RA 101985

*/

typedef struct _info{
	unsigned char carac;
	int freq;
} Info;

typedef struct _arvore{
	Info info;
	struct _arvore *esq,*dir;
	struct _arvore *pai;
}Arvore;

typedef struct _listasimples
{
	unsigned char carac;
	int freq;
	Arvore * no;
	struct _listasimples *prox;
}ListaSimples;

typedef struct _lista
{
	int valor;
	struct _lista *prox;
}Lista;

/* funcoes que devem ser acessadas pelos outros modulos */
void LiberaArvore(Arvore **p);
Arvore * MontaArvore(ListaSimples **lista);
void AchaCaminho(Arvore *reg,Lista **lista, int cod);
void LiberaListaSimples(ListaSimples **lista);
void SegueCaminho(FILE * entrada,Arvore *raiz);
Arvore * ReconstroiArv(FILE * entrada);
void LiberaLista(Lista **lista);
void AchaCaminho2(Arvore *reg,Lista **lista,int modo);
